package es.exitae.ejerciciofinal.dto;

import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.provider.BaseColumns;
import es.exitae.ejerciciofinal.provedorCont.EjercicioFinalProvider;
import es.exitae.ejerciciofinal.provedorCont.tablas.Lugares;
import es.exitae.ejerciciofinal.utils.Traza;
import es.exitae.ejerciciofinal.utils.WhereBuilder;
import es.exitae.ejerciciofinal.utils.enums.Metodo;

public class CargaDTOs
{
	private final ContentResolver cr;
	
	public CargaDTOs(ContentResolver cr)
	{
		this.cr = cr;
	}
	
	public ContentValues cargarContentValues(LugarDTO lugar)
	{
		Traza.d(Metodo.ENTRADA);
		
		ContentValues values = new ContentValues();
		values.put(Lugares.COL_NOMBRE, lugar.getNombre());
		values.put(Lugares.COL_DESCRIPCION, lugar.getDescripcion());
		values.put(Lugares.COL_LONGITUD, lugar.getCoodenadas().longitude);
		values.put(Lugares.COL_LATITUD, lugar.getCoodenadas().latitude);
		values.put(Lugares.COL_FOTO, lugar.getFotoString());
		
		Traza.d(Metodo.SALIDA);
		return values;
	}
	
	public LugarDTO cargarLugarDTO(Integer id)
	{
		Traza.d(Metodo.ENTRADA);
		LugarDTO lugar = null;
		
		if(id == 0)
		{
			return null;
		}
		
		Uri url = Uri.parse(EjercicioFinalProvider.LUGARES_URI);
		url = Uri.withAppendedPath(url, id.toString());
		Traza.i("Uri: " + url);
		
		String[] projection = {BaseColumns._ID, Lugares.COL_NOMBRE, Lugares.COL_DESCRIPCION, Lugares.COL_LATITUD, Lugares.COL_LONGITUD, Lugares.COL_FOTO};
		
		Cursor resultado = cr.query(url, projection, null, null, Lugares.DEFAULT_SORT_ORDER);
		
		if(resultado.moveToFirst())
		{
			lugar = new LugarDTO();
			int idLugar = resultado.getInt(0);
			lugar.setNombre(resultado.getString(1));
			lugar.setDescripcion(resultado.getString(2));
			lugar.setCoodenadas(resultado.getDouble(3), resultado.getDouble(4));
			lugar.setFoto(resultado.getString(5));
			
			Traza.i("Id del lugar:" + idLugar);
		}
		
		resultado.close();
		
		Traza.d(Metodo.SALIDA);
		return lugar;
	}
	
	public int getID(LugarDTO lugar)
	{
		Traza.d(Metodo.ENTRADA);
		int idLugar = -1;
		
		Uri url = Uri.parse(EjercicioFinalProvider.LUGARES_URI);
		
		String[] projection = {BaseColumns._ID};
		
		WhereBuilder where = new WhereBuilder();
		where.addAndIgual(Lugares.COL_NOMBRE, lugar.getNombre());
		where.addAndIgual(Lugares.COL_LONGITUD, String.valueOf(lugar.getCoodenadas().longitude));
		where.addAndIgual(Lugares.COL_LATITUD, String.valueOf(lugar.getCoodenadas().latitude));
		
		Cursor resultado = cr.query(url, projection, where.getWhere(), where.getWhereArg(), Lugares.DEFAULT_SORT_ORDER);
		
		if(resultado.moveToFirst())
		{
			idLugar = resultado.getInt(0);
		}
		
		resultado.close();
		
		Traza.d(Metodo.SALIDA);
		return idLugar;
	}
}
